<?php
/**
 * 清除缓存工具
 * 用于手动清除浏览器缓存和服务器缓存
 */

// 设置页面标题
$page_title = "清除缓存工具";

// 处理清除缓存请求
if ($_POST['action'] ?? '' === 'clear_cache') {
    $result = clearAllCaches();
    $message = $result ? "缓存清除成功！" : "缓存清除失败！";
}

/**
 * 清除所有缓存
 */
function clearAllCaches() {
    $success = true;
    
    // 清除PHP OPcache（如果启用）
    if (function_exists('opcache_reset')) {
        opcache_reset();
    }
    
    // 清除文件系统缓存（如果有的话）
    $cache_dirs = [
        __DIR__ . '/cache/',
        __DIR__ . '/tmp/',
        __DIR__ . '/logs/'
    ];
    
    foreach ($cache_dirs as $dir) {
        if (is_dir($dir)) {
            $success = clearDirectory($dir) && $success;
        }
    }
    
    return $success;
}

/**
 * 清除目录中的缓存文件
 */
function clearDirectory($dir) {
    if (!is_dir($dir)) {
        return false;
    }
    
    $files = glob($dir . '*');
    $success = true;
    
    foreach ($files as $file) {
        if (is_file($file)) {
            if (!unlink($file)) {
                $success = false;
            }
        } elseif (is_dir($file)) {
            $success = clearDirectory($file) && $success;
        }
    }
    
    return $success;
}

/**
 * 获取缓存状态信息
 */
function getCacheStatus() {
    $status = [];
    
    // PHP OPcache状态
    if (function_exists('opcache_get_status')) {
        $opcache_status = opcache_get_status();
        $status['opcache'] = $opcache_status ? '启用' : '禁用';
    } else {
        $status['opcache'] = '不可用';
    }
    
    // 文件修改时间
    $files = [
        'index.php' => __DIR__ . '/index.php',
        'mobile.css' => __DIR__ . '/assets/css/mobile.css',
        'mobile.js' => __DIR__ . '/assets/js/mobile.js'
    ];
    
    foreach ($files as $name => $path) {
        if (file_exists($path)) {
            $status[$name] = date('Y-m-d H:i:s', filemtime($path));
        } else {
            $status[$name] = '文件不存在';
        }
    }
    
    return $status;
}

$cache_status = getCacheStatus();
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $page_title; ?></title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f5f5f5;
        }
        .container {
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #333;
            text-align: center;
            margin-bottom: 30px;
        }
        .status-table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        .status-table th,
        .status-table td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .status-table th {
            background-color: #f8f9fa;
            font-weight: bold;
        }
        .clear-btn {
            background-color: #dc3545;
            color: white;
            padding: 12px 24px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
            display: block;
            margin: 20px auto;
        }
        .clear-btn:hover {
            background-color: #c82333;
        }
        .message {
            padding: 15px;
            margin: 20px 0;
            border-radius: 5px;
            text-align: center;
        }
        .success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        .error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        .info-box {
            background-color: #e7f3ff;
            border: 1px solid #b3d9ff;
            padding: 15px;
            border-radius: 5px;
            margin: 20px 0;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1><?php echo $page_title; ?></h1>
        
        <?php if (isset($message)): ?>
            <div class="message <?php echo $result ? 'success' : 'error'; ?>">
                <?php echo $message; ?>
            </div>
        <?php endif; ?>
        
        <div class="info-box">
            <h3>缓存状态信息</h3>
            <table class="status-table">
                <tr>
                    <th>项目</th>
                    <th>状态/时间</th>
                </tr>
                <?php foreach ($cache_status as $item => $value): ?>
                <tr>
                    <td><?php echo htmlspecialchars($item); ?></td>
                    <td><?php echo htmlspecialchars($value); ?></td>
                </tr>
                <?php endforeach; ?>
            </table>
        </div>
        
        <form method="post" onsubmit="return confirm('确定要清除所有缓存吗？');">
            <input type="hidden" name="action" value="clear_cache">
            <button type="submit" class="clear-btn">清除所有缓存</button>
        </form>
        
        <div class="info-box">
            <h3>使用说明</h3>
            <ul>
                <li><strong>自动版本控制：</strong>系统已配置自动版本控制，文件修改后会自动更新版本号</li>
                <li><strong>浏览器缓存：</strong>使用 Ctrl+F5 或 Cmd+Shift+R 强制刷新页面</li>
                <li><strong>服务器缓存：</strong>点击上方按钮清除服务器端缓存</li>
                <li><strong>开发模式：</strong>建议在开发时禁用浏览器缓存</li>
            </ul>
        </div>
        
        <div class="info-box">
            <h3>开发者工具</h3>
            <p>在浏览器开发者工具中：</p>
            <ul>
                <li>打开 Network 标签页</li>
                <li>勾选 "Disable cache" 选项</li>
                <li>保持开发者工具打开状态</li>
            </ul>
        </div>
    </div>
</body>
</html>
